#include "PlaylistImExport.h"

using namespace std;

/**
 * importPlayList()
 * Diese Methode importiert die Pfäde der Musiktitel, die in der
 * txt-Datei mit dem Namen des Attributs 'fileName' stehen und legt
 * sie in den uebergebenen String-Vektors ab.
 * @param pathes
 *      Liste in die Pfade der txt-Datei geschrieben werden
 */
void PlayListImExport::importPlayList(std::vector<string> &pathes){
    ifstream quelle;
    quelle.open(fileName, ios::in);
    std::string lineString;
    while(getline(quelle, lineString)){
        if (lineString == "#"){
            break;
        }else{
            int lr = lineString.find("\r", 1);
            if(lr != -1) lineString.erase(lr,2);
            lr = lineString.find("\n", 1);
            if(lr != -1) lineString.erase(lr,2);
            lr = lineString.find("\t", 1);
            if(lr != -1) lineString.erase(lr,2);
            pathes.push_back(lineString);
        }
    }
}

/**
 * exportPlayList()
 * Exportiert den uebergebenen String-Vektor in die txt-Datei mit dem
 * Namen des Attributs 'fileName'.
 * @param pathes
 *      Liste mit Pfaden der Wiedergabeliste
 */
void PlayListImExport::exportPlayList(const std::vector<std::string>* pathes){
    ofstream ausgabe(fileName, ios::trunc);
    for(size_t i = 0; i<pathes->size(); i++){
        ausgabe << pathes->at(i) << std::endl;
    }
    ausgabe << "#";
}

 /**
     * Diese Methode setzt das Attribut fileName. Sie kann benutzt werden
     * wenn das Programm so erweitert wird, das neue Wiedergabelisten erstellt
     * oder die Wiedergabeliste getauscht werden koennen.
     * @param fileName
     *      zu setzende Name
  * 
     */
void PlayListImExport::setFileName(const char* parFileName){
    fileName = parFileName;
}
